#pragma once

// 定义消息结构
typedef struct {
    uint8_t *data;          // 数据指针
    size_t length;          // 数据长度
    int status;             // HTTP状态码
    void *user_ctx;         // 用户上下文
} http_message_t;

typedef struct {
    char location_id[32];
    char location_name[32];
    char country[8];
    char path[128];
    char timezone[32];
    char timezone_offset[16];
} location_info_t;

typedef struct {
    char car_washing_brief[32];
    char dressing_brief[32];
    char flu_brief[32];
    char sport_brief[32];
    char travel_brief[32];
    char uv_brief[32];
} suggestion_info_t;

typedef struct {
    location_info_t location;
    suggestion_info_t suggestion;
    char last_update[32];
} weather_data_t;

typedef struct {
    char date[16];                  // 日期
    char text_day[32];              // 白天天气现象
    int code_day;                   // 白天天气现象代码
    char text_night[32];            // 夜间天气现象
    int code_night;                 // 夜间天气现象代码
    int high;                       // 最高温度
    int low;                        // 最低温度
    float rainfall;                 // 降雨量
    float precip;                   // 降水概率
    char wind_direction[16];        // 风向
    int wind_direction_degree;      // 风向角度
    float wind_speed;               // 风速
    int wind_scale;                 // 风力等级
    int humidity;                   // 湿度
} daily_weather_t;

// 定义完整的天气预报结构
typedef struct {
    location_info_t location;       // 地点信息
    daily_weather_t daily[3];       // 多日天气预报（最多3天）
    int daily_count;                // 实际天数
    char last_update[32];           // 最后更新时间
} weather_forecast_t;

// 定义当前天气状况结构
typedef struct {
    char text[32];                  // 天气现象文字描述
    int code;                       // 天气现象代码
    int temperature;                // 温度
} current_weather_t;

// 定义完整的实时天气结构
typedef struct {
    location_info_t location;       // 地点信息
    current_weather_t now;          // 当前天气状况
    char last_update[32];           // 最后更新时间
} weather_now_t;

typedef struct {
    int mid;           // 用户ID
    int following;     // 关注数
    int whisper;       // 悄悄关注数
    int black;         // 黑名单数
    int follower;      // 粉丝数
} user_relation_data_t;

// 定义完整的响应结构
typedef struct {
    int code;                  // 状态码
    const char *message;       // 消息
    int ttl;                   // TTL值
    user_relation_data_t data; // 用户关系数据
} user_relation_response_t;

void get_weather_task(void *pvParameters);
void rec_analyze_http_data_task(void *pvParameters);